package com.lmaye.design.patterns.behavioral.observer.demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * -- 抽象目标
 *
 * @author lmay.Zhou
 * @qq 379839355
 * @email lmay@lmaye.com
 * @date 2021/4/19 下午5:18
 * @since 1.8
 */
public abstract class Subject {
    /**
     * 观察者
     */
    protected List<Observer> observers = new ArrayList<>();

    /**
     * 增加观察者方法
     *
     * @param observer Observer
     */
    public void add(Observer observer) {
        observers.add(observer);
    }

    /**
     * 删除观察者方法
     *
     * @param observer Observer
     */
    public void remove(Observer observer) {
        observers.remove(observer);
    }

    /**
     * 通知观察者方法
     */
    public abstract void notifyObserver();
}
